<?php
class Conf_exportacion_excel extends MY_Controller {

	public function __construct()
    {
    	# Al constructor le envío la clase Controlador, y el nombre de la entidad gestionada
    	parent::__construct(get_class($this), 'Conf_exportar_excel');

    	$this->title = 'Configuraciones :: Ajustes :: Exportar Excel';
		$this->CARPETA_VISTAS = 'configuraciones/';
		$this->nombre_entidad = 'Configuración de Exportación';
		$this->nombre_entidad_plural = 'Configuraciones de Exportación';

		$this->pagina_editar = $this->CARPETA_VISTAS . 'config_exportar_excel_edit_view';

		$this->nuevoPermitido = FALSE;
		$this->exportarExcelPermitido = FALSE;
		$this->genero_entidad = 'F';
	}

	public function editar($id_unidad_negocio = NULL)
	{
		$dataView = array();
		$objEntidad = $this->getObjeto();
		$objEntidad->where('conf_unidad_negocio_id', $id_unidad_negocio)->get();

		$dataView['objEntidad'] = $objEntidad;
		$dataView['title'] = 'Editar: Configuración de Exportación a Excel';
		$this->_cargarFormEdicion($dataView);
	}

	/* IMPORTANTE: DEBE existir esta función. 
	 * Crea un objeto de la entidad correspondiente y lo pobla con la información obtenida a 
	 * partir del formulario recibido a través de POST.	*/
	protected function getObjetoDesdeForm()
	{
		$idEntidad = is_numeric($this->input->post('txt_id')) ? $this->input->post('txt_id') : NULL;
		
		$objEntidad = $this->getObjeto($idEntidad);
		$objEntidad->conf_unidad_negocio_id = $this->input->post('txt_conf_unidad_negocio');
		$objEntidad->mostrar_logo = $this->input->post('chk_mostrar_logo');
		if($objEntidad->mostrar_logo) {
			$objEntidad->logo_celdaInicio = $this->input->post('txt_logo_celdaInicio');
			$objEntidad->logo_celdaFin = $this->input->post('txt_logo_celdaFin');
		}

		$objEntidad->mostrar_empresa = $this->input->post('chk_mostrar_empresa');
		if($objEntidad->mostrar_empresa) {
			$objEntidad->empresa_celdaInicio = $this->input->post('txt_empresa_celdaInicio');
			$objEntidad->empresa_celdaFin = $this->input->post('txt_empresa_celdaFin');
		}

		$objEntidad->mostrar_titulo = $this->input->post('chk_mostrar_titulo');
		if($objEntidad->mostrar_titulo) {
			$objEntidad->titulo_celdaInicio = $this->input->post('txt_titulo_celdaInicio');
			$objEntidad->titulo_celdaFin = $this->input->post('txt_titulo_celdaFin');
		}

		$objEntidad->mostrar_fecha = $this->input->post('chk_mostrar_fecha');
		if($objEntidad->mostrar_fecha) {
			$objEntidad->fecha_celdaInicio = $this->input->post('txt_fecha_celdaInicio');
			$objEntidad->fecha_celdaFin = $this->input->post('txt_fecha_celdaFin');
		}

		$objEntidad->cabecera_celdaInicio = $this->input->post('txt_cabecera_celdaInicio');
		$objEntidad->datos_celdaInicio = $this->input->post('txt_datos_celdaInicio');
		$objEntidad->excel2007omayor = $this->input->post('chk_excel2007omayor');

		$datos['objEntidad'] = $objEntidad;

		// Objetos relacionados: en este caso guardo directamente el id.
		$datos['objRelacionados'] = array();

		return $datos;
	}

	/* IMPORTANTE: DEBE existir esta función. 
	 * Carga en el arreglo que luego se pasarán a las vistas, los datos correspondientes a otras entidades que se
	 * necesiten. Por ejemplo, en este método deben cargarse las entidades a las que puede asociarse o relacionarse
	 * la entidad actual. Si no se requiriesen, no se agrega nada. */
	protected function cargarDatosRelacionados($dataView)
	{	
		return $dataView;
	}

	/* IMPORTANTE: DEBE existir esta función. 
	 * Obtiene el listado de elementos de acuerdo a los filtros que se hayan establecido y enviado a través
	 * del método POST. Devuelve un detalle de los filtros aplicados (o vacío si no hubiera filtros)	*/	
	protected function _aplicarFiltros($dataView = array())
	{
		// Creo un objeto del modelo, para poblarlo con los datos que necesito mostrar
		$objEntidad = $this->getObjeto();
		$detalle_filtros = '';

		$dataView['objEntidad'] = $objEntidad;
		$dataView['detalle_filtros'] = $detalle_filtros;

		return $dataView;
	}

	/* IMPORTANTE: DEBE existir esta función.
	 * Valida las condiciones que deben cumplirse para que un elemento pueda ELIMINARSE. */
	protected function validarEliminacion($id_elemento)
	{
		return FALSE;
	}

	/* IMPORTANTE: DEBE existir esta función.
	 * Valida las condiciones que deben cumplirse para que un elemento pueda EDITARSE. */
	protected function validarEdicion($id_elemento)
	{
		return TRUE;
	}

	public function guardar()
	{
		$dataView = parent::guardarEntidad();
		if($dataView['error'] != '') {
			// Falló el intento de guardar
			$this->_cargarFormEdicion($dataView, TRUE); 
		}
		else { redirect('conf_unidades_negocio/ver_todos'); }
	}
}